/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Application.MainForm;
import java.awt.*;
import java.awt.event.*;
import Application.Elements.Wavegen;
/**
 * A Wavegen osztalyt megjelenito control
 * @author Stikmann
 */
public class WavegenControl extends Panel implements ActionListener{
    private Wavegen wavegen;
    private NetworkUpdateListener updatelistener;

    /**
     * A tartalmazott gomb event listener fuggvenye. Mivel csak egygomb van, es
     * annak iscsak egy funkcioja,a leptetes, ezert a wavegent lepteti.
     * @param e
     */
    public void actionPerformed(ActionEvent e){
        wavegen.step();
        invalidate();
        if (updatelistener!=null)
            updatelistener.networkUpdate();
    }

    /**
     * Az osztaly konstruktora
     * @param awavegen A wavegen amire figyel es amit vezerel
     * @param aupdatelistener Egy observer, aminek jelez, ha a buttonon
     * valtozas all be.
     */
    @SuppressWarnings("LeakingThisInConstructor")
    public WavegenControl(Wavegen awavegen,NetworkUpdateListener aupdatelistener){
        super();
        wavegen=awavegen;
        updatelistener=aupdatelistener;
        setLayout(null);
        setSize(70,35);

        Button button0=new Button("Léptetés");
        add(button0);
        button0.setSize(70,20);
        button0.setLocation(0, 15);
        button0.addActionListener(this);
    }

    /**
     * A java hivja meg, ha ujra kell rajzolni a controlt
     * @param g
     */
    @Override
    public void paint(Graphics g){
        g.setFont(Font.decode("Verdana 11"));
        for (int i=0; i<wavegen.sequence.size(); ++i)
        {
            String szvg=wavegen.sequence.get(i)?"1":"0";
            if (wavegen.index==i)
                g.setColor(Color.red);
            else
                g.setColor(Color.white);
            g.fillRect(i*7,0,7,15);
            g.setColor(Color.black);
            g.drawString(szvg, i*7, 10);
        }
        
    }

    /**
     * Ervenyteleniteskor hivja meg a java a fuggvenyt, ami jelen esetben ujra
     * is rajzoltatja a controlt.
     */
    @Override
    public void invalidate(){
        super.invalidate();
        this.repaint();
    }
}

